1. Technical Field
Embodiments relate generally to direct memory access (DMA) data transfers. More particularly, certain embodiments relate to techniques for providing information identifying a next DMA task to be serviced by a DMA engine.
2. Background Art
Computer platforms often include, or otherwise serve, multiple entities—e.g. processor cores, threads, applications and/or virtual machines—which require data channels for performing respective direct memory access (DMA) tasks on their behalf In allocating memory access resources for such entities, a computer platform may arbitrate among their respective channels—e.g. according to one or more arbitration standards. For example, a computer platform may include or have access to a round robin arbitrator which defines a sequence according to which channels are to be serviced.
In some circumstances, it may be beneficial for the computer platform to recognize a relative greater importance of one data channel with respect to another. Such recognition might be implemented, for example, by assigning respective priorities to one or more channels, where the assigned priorities may be used to arbitrate, from among those channels with tasks which are currently pending, a next channel's task to be serviced.
Unfortunately, a round robin arbitration standard and a channel priority arbitration standard may operate at cross-purposes with one another. Compounding these two arbitration standards with one another may lead to a pending task being denied service for an intolerably long period of time—e.g. where one arbitration standard repeatedly precludes servicing of such pending tasks according to the other standard. Such extended denial of service of a task—referred to herein as task starvation—may affect performance of one or more computer platform operations which are associated with the starved channel.